package com.gzy.android_douban.data.api;

import com.gzy.android_douban.data.model.MovieDateilModel;
import com.gzy.android_douban.data.model.MovieModel;
import com.gzy.android_douban.data.model.UsersLoginModel;
import com.gzy.android_douban.data.model.UsersRegisteredModel;
import com.gzy.android_douban.data.model.ValidateCodeModel;

import org.json.JSONObject;

import java.util.List;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * @author : guzy
 * @program: net-app
 * @description: 课堂api
 * @date : 2022-03-26 11:27
 **/
public interface ApiService {

  // public static String mBaseUrl = "http://124.221.182.86:8080/web-lesson-server/";
  public static String mBaseUrl = "http://124.221.182.86:8877/";
  // public static String mBaseUrl = "http://139.155.21.79:8080/web-lesson3-server/";
  //获取验证码
  // @GET("api/validate-code")
  // Observable<CodeBean> getCodePicture();

  //登录接口
//  @POST("api/login")
//  Observable<ResponseBody> loginApi(@Body RequestBody body);

  // //注册
  // @POST("register")
  // Observable<ResponseBody> registerApi(@Body RequestBody body);
  //
  // //退出用户
  // @POST("layout")
  // Observable<ResponseBody> layoutApi(@Body RequestBody body);

  //识别脸部照片
//  @POST("api/face")
//  @Multipart
//  Observable<ResponseBody> uploadFacePhoto2(@Part MultipartBody.Part part, @Part("token") RequestBody token);

  //发布作品
//  @POST("api/image-info")
//  @Multipart
  // Observable<ImageInfoBean> createOneImageInfoApi(@Part MultipartBody.Part part,
  //                                                 @Part("token") RequestBody token,
  //                                                 @Part("login") RequestBody login,
  //                                                 @Part("imageText") RequestBody imageText,
  //                                                 @Part("publishStatus") RequestBody publishStatus);

  //获取所有作品列表
  // @GET("api/image-info")
  // Observable<List<ImageInfoBean>> getAllImageInfoApi(@Query("token") String token);

  //获取 单个作品
  // @GET("api/image-info")
  // Observable<ImageInfoBean> getOneImageInfoApi(@Query("imageId") String imageId, @Query("token") String token);

  //删除作品
//  @DELETE("api/image-info")
//  Observable<ResponseBody> deleteOneImageInfoApi(@Query("imageId") String imageId, @Query("token") String token);


  // 分页获取影片
  @GET("/api/movie-info/{currentPage}/{pageSize}/classify")
  Observable<MovieModel> getMovieListApi(@Path("currentPage") Integer currentPage,
                                         @Path("pageSize") Integer pageSize,
                                         @Query("keywords") String keywords,
                                         @Query("movieType") String movieType,
                                         @Query("movieYear") Integer movieYear,
                                         @Query("token")String name);

  // 获取单个影片详情
  @GET("/api/movie-info/{movieId}")
  Observable<MovieDateilModel> getMovieDetailApi(@Path("movieId") Integer movieId ,
                                                 @Query("token") String token);

  // 分页根据评分获取影片
  @GET("/api/movie-info/{currentPage}/{pageSize}/rating")
  Observable<MovieModel> getMovieListByRatingApi(@Path("currentPage") Integer currentPage,
                                                 @Path("pageSize") Integer pageSize,
                                                 @Query("token") String token );

  // 获取验证码
  @GET("/api/validate-code")
  Observable<ValidateCodeModel> getValidateCodeApi();
  // 获取验证码照片
  @GET("/image/validate-code/{code}")
  Observable<ResponseBody> getValidateCodeImageApi(@Path("code") String code);
  // 注册
  @POST("/api/registered")
  Observable<UsersRegisteredModel> postRegisteredApi(@Body RequestBody body);
  // 登录
  @POST("/api/login")
  Observable<UsersLoginModel> postLoginApi(@Query("password") String password
          ,@Query("randomCode") String randomCode
          ,@Query("username") String username
          ,@Query("validateCode") Integer validateCode);
  // 退出、修改账户状态
//  @POST("/api/layout")
//  Observable<>
}
